類型 | 運算子 | 說明 |
---|---|---|
算術運算子 | + - * / % ** |
加、減、乘、除、取餘數、次方 |
字串運算子 | . |
字串串接 |
賦值運算子 | = += -= *= .= |
指派值給變數,或結合運算 |
比較運算子 | == === != !== < > <= >= |
比較值或型別 |
邏輯運算子 | && || ! |
AND 、OR 、NOT |
增減運算子 | ++ -- |
遞增、遞減 |
三元運算子 | ?: |
簡單條件判斷 |
合併運算子 | ?? |
null 合併運算子 |
在開始前先講一下PHP有2個印出方式 echo和var_dump 今天會用到這2個輸出模式
var_dump
會輸出 值與型別
var_dump(5 !== "5"); // bool(true)
echo
只能輸出 字串或可轉字串的值
echo (5 !== "5"); // 1
這是一個蠻直覺的符號運算,跟以前學的數學基本上一樣,但 % 特別講一下,在程式中很常用,用來取除法的餘數
5 / 2; // 2.5
5 % 2; // 1,取餘數
這個符號以前有用過
echo "hello" . " world"; // helloworld
=
$a = 1; // 把 1 指派給 $a
+=
$a += $b; // 等同 $a = $a + $b
-=
$a -= $b; // 等同 $a = $a - $b
*=
$a *= $b; // 等同 $a = $a * $b
.=
$a .= $b; // 等同 $a = $a . $b,把 $b 接在 $a 後面
==
只比較值是否相等,會自動轉型 (寬鬆比較,有時會出錯)
var_dump(5 == 5); // true
var_dump(5 == "5"); // true
var_dump(null == 0); // true (null 轉成 0)
===
比較值且比較型別(嚴格比較)
var_dump(5 === "5"); // false (型別不同,一個是 int,一個是 string)
var_dump(5 === 5); // true (值相等且型別相同)
!=
!代表相反的意思 所以 != 是不相等的意思
var_dump(5 != "5"); //false (寬鬆比較,字串5被轉換為int,所以2個被判斷為相等輸出false)
!==
var_dump(5 !== "5"); // true (型別不同)
<
小於
var_dump(3 < 5); // true
>
大於
var_dump(5 > 3); // true
<=
小於或等於
var_dump(3 <= 3); // true
var_dump(2 <= 1); // false
>=
大於或等於
var_dump(5 >= 5); // true
var_dump(6 >= 7); // false
&&
\|\|
!
這3個的用法分別是
$a = true;
$b = false;
var_dump($a && $b); // AND -> false
var_dump($a || $b); // OR -> true
var_dump(!$a); // NOT -> false
用來讓變數自動加一或減一,可以放在前或後
$a = 5;
$a++; // $a = 6
$a--; // $a = 5
// 前置與後置差別
$b = 5;
echo ++$b; // 6,先增加再使用,$b 變成 6,輸出 6
echo $b; // 6(因為上一行已經把 $b 改成 6)
echo $b++; // 6,先輸出再增加,輸出 6,然後 $b 變成 7
簡單條件判斷,讓程式更簡潔
$score = 70;
$result = ($score >= 60) ? "及格" : "不及格"; // ?後面放符合條件的輸出, :後面放不符合條件的輸出
echo $result; // 及格
?? 是 null 合併運算子,如果左邊為 null,就取右邊的值:
$name = $_GET['name'] ?? "訪客";
echo $name; // 如果 $_GET['name'] 沒有設定,就輸出 "訪客"
今天把各種運算子詳細整理了一遍,搭配 echo 與 var_dump 也試了一些範例,對算數、比較、邏輯運算有更清楚的概念。明天再用整數和字串做一些練習,確認程式輸出結果。